package com.punai.customer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.punai.common.core.page.TableDataInfo;
import com.punai.customer.domain.CusFbFee;
import com.punai.customer.domain.bo.MergeGxToFeeResultBo;
import com.punai.customer.domain.request.CusRewriteCodeRequest;
import com.punai.customer.domain.vo.*;
import com.punai.standard.domain.StaFbFee;

import java.util.List;

/**
 * 分包费用项Service接口
 *
 * @author zxw
 * @date 2022-12-09
 */
public interface ICusFbFeeService extends IService<CusFbFee>
{
    /**
     * 查询分包费用项
     *
     * @param id 分包费用项主键
     * @param companyId
     * @return 分包费用项
     */
    public MergeGxToFeeResultBo selectDmcFbFeeById(String id,Long companyId);

    /**
     * 查询分包费用项列表
     *
     * @param dmcFbFee 分包费用项
     * @param companyId
     * @return 分包费用项集合
     */
    public TableDataInfo selectDmcFbFeeList(CusFbFee dmcFbFee, Long companyId);

    /**
     * 新增分包费用项
     *
     * @param dmcFbFee 分包费用项
     * @return 结果
     */
    public int insertDmcFbFee(CusFbFee dmcFbFee);

    /**
     * 修改分包费用项
     *
     * @param dmcFbFee 分包费用项
     * @return 结果
     */
    public int updateDmcFbFee(FbFeeUpdateVo feeUpdateVo,Long companyId);

    /**
     * 批量删除分包费用项
     *
     * @param ids 需要删除的分包费用项主键集合
     * @return 结果
     */
    public int deleteDmcFbFeeByIds(String[] ids);

    /**
     * 删除分包费用项信息
     *
     * @param id 分包费用项主键
     * @param companyId
     * @return 结果
     */
    public int deleteDmcFbFeeById(String id,Long companyId);

    int insertFbFee(SubContVo vo, Long companyId);

    MergeGxToFeeResultBo changeGxLink(ChangeGxLinkVo vo,Long companyId);

    int moveFeeToNewChapter(String chapterId, String[] ids, Long companyId);

    int insertFbFeeBySubject(AddSubjectContVo vo, Long companyId);

    int updateFbFee(FbUpdateVo vo, Long companyId);

    /**
     * 重新编码
     * @param companyId
     * @return
     */
    int rewriteCode(CusRewriteCodeRequest codeRequest);

    public List<CusFbFee> validateCode(Long companyId,String specId);

    public StaFbFee getStaFbFeeById(String id, String specId, Long companyId);
}
